package com.vtuzx.kingdee.xqc_core.dao;

import com.vtuzx.core.db.mongo.impl.VtuzxDaoImpl;
import com.vtuzx.kingdee.xqc_core.constant.BillStatus;
import org.bson.Document;
import org.bson.types.ObjectId;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.stereotype.Component;

import java.util.Date;

//组合装信息
@Component
public class GoodsPackageDao extends VtuzxDaoImpl {
    /** 集合名称 */
    public static final String NAME = "t_goods_package";

    public GoodsPackageDao() {
        super(NAME);
    }

    public GoodsPackageDao(String collName) {
        super(collName);
    }

    /**
     * 新建单据
     *
     * @param _userId 用户ID
     * @param userName 用户名
     * @param doc 数据
     * @return 单据ID
     */
    public ObjectId insertBill(ObjectId _userId, String userName, Document doc) {
        doc.append("_createUserId", _userId);
        doc.append("createUserName", userName);
        doc.append("_updateUserId", _userId);
        doc.append("updateUserName", userName);
        return insertOne(doc);
    }

    /**
     * 审批单据
     *
     * @param _userId 用户ID
     * @param userName 用户名
     * @param billNo 数据编号
     */
    public void audit(ObjectId _userId, String userName, String billNo) {
        updateOne(Criteria.where("billNo").is(billNo),
                new Document("status", BillStatus.Audit.toString())
                        .append("auditTime", new Date())
                        .append("_auditUserId", _userId)
                        .append("auditUserName", userName));
    }

    /**
     * 反审批单据
     *
     * @param billNo 数据编号
     */
    public void unaudit(String billNo) {
        updateOne(Criteria.where("billNo").is(billNo), new Document("status", BillStatus.Save.toString()));
    }

    /**
     * 根据仓库名称获取公司名称
     * @param
     * @return 公司名称
     */
    /*public Double getCompanyByName() {
        Document warehouse = findOne(
                *//*Criteria.where("goodsPackageDetail.goodsNo").is("040302038")
                        .and("goodsNo").is("557593646130")
        );*//*
                Criteria.where("goodsNo").is("557593646130"));
        return warehouse != null ? warehouse.getDouble("goodsPackageDetail.shareRatio") : null;
    }*/
}
